// Package product
// @Author liuzhiyong
// @Date 2023/11/15
// @Description 商品控制器请求和响应结构体
package product

import (
	"github.com/shopspring/decimal"
	"shopping/model"
)

// CreateProductRequest
// @Description: 创建商品请求参数
type CreateProductRequest struct {
	Name       string  `json:"name"`
	Desc       string  `json:"desc"`
	Price      float32 `json:"price"`
	Count      int     `json:"count"`
	CategoryId int64   `json:"categoryId"`
}

// CreateProductResponse
// @Description: 创建商品响应参数
type CreateProductResponse struct {
	Message string `json:"message"`
}

// DeleteProductRequest
// @Description: 删除商品请求参数
type DeleteProductRequest struct {
	SKU string `json:"sku"`
}

// UpdateProductRequest
// @Description: 更新商品请求参数
type UpdateProductRequest struct {
	SKU        string  `json:"sku"`
	Name       string  `json:"name"`
	Desc       string  `json:"desc"`
	Price      float32 `json:"price"`
	Count      int     `json:"count"`
	CategoryId int64   `json:"categoryId"`
}

// ToProduct
// @Description: 类型转换 UpdateProductRequest 转 model.Product
// @receiver p UpdateProductRequest
// @return *model.Product
func (p *UpdateProductRequest) ToProduct() *model.Product {
	price := decimal.NewFromFloat32(p.Price)
	return model.NewProduct(p.Name, p.Desc, p.Count, price, p.CategoryId)
}
